<?php

namespace Home\Biz;

class StringBiz {
    /**
     * 根据经销商类型获取订单类型
     * @param $source
     * @return int|string
     */
	public static function getOrderTypeByDealerChannel($source) {
		switch ($source) {
			case 1 :
				return 8;
				break;
			case 2 :
				return 10;
				break;
			case 3 :
				return 11;
				break;
			default :
				return strval ( $source );
		}
	}

	
	
	
	
	
    /**
     * 根据经销商类型获取sku渠道
     * @param $source
     * @return int|string
     */
    public static function getSkuChannelByDealerChannel($source) {
        switch ($source) {
            case 1 :
                return 8;
                break;
            case 2 :
                return 10;
                break;
            case 3 :
                return 11;
                break;
            default :
                return strval ( $source );
        }
    }


	public static function getDealerTypeRevenueStatusText($source) {
		switch ($source) {
			case 1 :
				return '一般纳税人';
				break;
			case 2 :
				return '个体工商户';
				break;
			
			default :
				return strval ( $source );
		}
	}
	public static function getDealerRechargeTypeRevenueStatusText($source) {
		switch ($source) {
			case 1 :
				return '已提交';
				break;
			case 2 :
				return '付款凭证已上传';
				break;
			case 3 :
				return '销售管理部已审批';
				break;
			case 4 :
				return '财务已审批';
				break;
			case 5 :
				return '充值成功';
				break;
			case 11 :
				return '无效充值';
				break;
			default :
				return strval ( $source );
		}
	}
	public static function getDealerAmountKindRevenueStatusText($source) {
		switch ($source) {
			case 1 :
				return '增加';
				break;
			case 2 :
				return '减少';
				break;
			
			default :
				return strval ( $source );
		}
	}
	public static function getDealerAmountTypeRevenueStatusText($source) {
		switch ($source) {
			case 11 :
				return '管理员增加';
				break;
			case 12 :
				return '订单提成';
				break;
			case 13 :
				return '充值';
				break;
			case 15 :
				return '订单取消余额退回';
				break;
            case 16 :
                return '退货成功退款';
                break;
			case 21 :
				return "管理员减少";
				break;
			case 22 :
				return '提现';
				break;
			case 24 :
				return '订单支付';
				break;
			default :
				return strval ( $source );
		}
	}
	public static function getRRSPaymentStatusText($source) {
		switch ($source) {
			case 0 :
				return '未付款';
				break;
			case 1 :
				return '已付款';
				break;
			case 2 :
				return '部分支付';
				break;
			case 3 :
				return '已退款';
				break;
			default :
				return strval ( $source );
				break;
		}
	}
	public static function getDealerSignStatusRevenueStatusText($source) {
		switch ($source) {
			case 1 :
				return '待签约';
				break;
			case 2 :
				return '经销商待盖章';
				break;
			case 3 :
				return '已签约';
				break;
			
			default :
				return strval ( $source );
		}
	}
	public static function getOrderCanelRoleTypeText($source) {
		switch ($source) {
			case 1 :
				return '用户';
				break;
			case 2 :
				return '客服';
				break;
			default :
				return strval ( $source );
		}
	}
	public static function getOrderCanelCancelReasonText($source) {
		switch ($source) {
			case 1 :
				return '不想要了';
				break;
			case 2 :
				return '下错单了';
				break;
			default :
				return strval ( $source );
		}
	}
	
	/**
	 * 判断字符串是否手机号码
	 *
	 * @param unknown $str        	
	 */
	public static function isCellphone($str) {
		if (preg_match ( "/^((1[3,5,7,8][0-9])|(14[5,7])|(17[0,1,6,7,8]))\d{8}$/", $str )) {
			// 验证通过
			return true;
		} else {
			// 手机号码格式不对
			return false;
		}
	}
	public static function isPhone($str) {
		if (preg_match ( "/^([0-9]{3,4}-)?[0-9]{7,8}$/", $str )) {
			// 验证通过
			return true;
		} else {
			// 手机号码格式不对
			return false;
		}
	}
	public static function isIdentity($id_card) {
		if (strlen ( $id_card ) == 18) {
			return StringBiz::idcard_checksum18 ( $id_card );
		} elseif ((strlen ( $id_card ) == 15)) {
			$id_card = StringBiz::idcard_15to18 ( $id_card );
			return StringBiz::idcard_checksum18 ( $id_card );
		} else {
			return false;
		}
	}
	public static function idcard_verify_number($idcard_base) {
		if (strlen ( $idcard_base ) != 17) {
			return false;
		}
		// 加权因子
		$factor = array (
				7,
				9,
				10,
				5,
				8,
				4,
				2,
				1,
				6,
				3,
				7,
				9,
				10,
				5,
				8,
				4,
				2 
		);
		// 校验码对应值
		$verify_number_list = array (
				'1',
				'0',
				'X',
				'9',
				'8',
				'7',
				'6',
				'5',
				'4',
				'3',
				'2' 
		);
		$checksum = 0;
		for($i = 0; $i < strlen ( $idcard_base ); $i ++) {
			$checksum += substr ( $idcard_base, $i, 1 ) * $factor [$i];
		}
		$mod = $checksum % 11;
		$verify_number = $verify_number_list [$mod];
		return $verify_number;
	}
	
	// 将15位身份证升级到18位
	public static function idcard_15to18($idcard) {
		if (strlen ( $idcard ) != 15) {
			return false;
		} else {
			// 如果身份证顺序码是996 997 998 999，这些是为百岁以上老人的特殊编码
			if (array_search ( substr ( $idcard, 12, 3 ), array (
					'996',
					'997',
					'998',
					'999' 
			) ) !== false) {
				$idcard = substr ( $idcard, 0, 6 ) . '18' . substr ( $idcard, 6, 9 );
			} else {
				$idcard = substr ( $idcard, 0, 6 ) . '19' . substr ( $idcard, 6, 9 );
			}
		}
		$idcard = $idcard . StringBiz::idcard_verify_number ( $idcard );
		return $idcard;
	}
	
	// 18位身份证校验码有效性检查
	public static function idcard_checksum18($idcard) {
		if (strlen ( $idcard ) != 18) {
			return false;
		}
		$idcard_base = substr ( $idcard, 0, 17 );
		if (StringBiz::idcard_verify_number ( $idcard_base ) != strtoupper ( substr ( $idcard, 17, 1 ) )) {
			return false;
		} else {
			return true;
		}
	}
	public static function isExistChinese($str) {
		$x = mb_strlen ( $str, 'gb2312' );
		$y = strlen ( $str );
		
		if ($x == $y) {
			return false;
		} else {
			return true;
		}
	}
	public static function checkAmount($amount) {
		
		// if(preg_match("/^(0|([1-9][0-9]{0,9}))(.[0-9]{1,3})?$/", $amount)){
		if (preg_match ( "/^(?!0+(?:\.0+)?$)(?:[1-9]\d*|0)(?:\.\d{1,3})?$/", $amount )) {
			
			return True;
		} else {
			
			return FALSE;
		}
	}
	public static function checkEmail($email) {
		if (preg_match ( "/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/", $email )) {
			
			return True;
		} else {
			
			return FALSE;
		}
	}
	public static function getDealerStatusRevenueStatusText($source) {
		switch ($source) {
			case 1 :
				return '待审核';
				break;
			case 2 :
				return '已审核';
				break;
			case 3 :
				return '审核拒绝';
				break;
			default :
				return strval ( $source );
		}
	}
	
	/**
	 * 获取promoter_order订单状态文本
	 */
	public static function getPromoterOrderStatusText($source) {
		switch ($source) {
			case 10 :
				return '已提交';
				break;
			case 11 :
				return '已审核';
				break;
			case 12 :
				return '订单处理中';
				break;
			case 14 :
				return '销售管理部已审核';
				break;
			case 15 :
				return '财务审核通过';
				break;
			case 16 :
				return '财务审核拒绝';
				break;
			case 21 :
				return '待支付';
				break;
			case 22 :
				return '已支付';
				break;
			case 23 :
				return '支付凭证已上传';
				break;
			case 25 :
				return '物流处理中';
				break;
			case 31 :
				return '已全部发货';
				break;
			case 33 :
				return '部分发货';
				break;
			case 32 :
				return '已签收';
				break;
			case 35 :
				return '已完成';
				break;
			case 41 :
				return '退货中';
				break;
			case 42 :
				return '退货完成';
				break;
			case 43 :
				return '换货中';
				break;
			case 44 :
				return '换货完成';
				break;
			case 51 :
				return '用户取消';
				break;
			case 52 :
				return '客服取消';
				break;
			case 53 :
				return '系统自动取消';
				break;
			case 54 :
					return '客服分次全部取消';
					break;
			default :
				return strval ( $source );
				break;
		}
	}
	
	/**
	 * 付款状态
	 */
	public static function getPaymentStatusText($source) {
		switch ($source) {
			case 0 :
				return '未支付';
				break;
			case 1 :
				return '已支付';
				break;
			case 2 :
				return '部分支付';
				break;
			case 3 :
				return '已退款';
				break;
			default :
				return strval ( $source );
				break;
		}
	}
	
	/**
	 * 付款状态
	 */
	public static function getPaymentTypeText($source) {
		switch ($source) {
			case 1 :
				return '货到付款';
				break;
			case 2 :
				return '在线支付';
				break;
			case 3 :
				return '余额支付';
				break;
			case 4 :
				return '财务支付';
				break;
			default :
				return strval ( $source );
				break;
		}
	}
	
	/**
	 * 订单类型
	 */
	public static function getOrderTypeText($source) {
		switch ($source) {
			case 1 :
				return '淘宝';
				break;
			case 2 :
				return '京东';
				break;
			case 3 :
				return '官网';
				break;
			case 5 :
				return '英雄会';
				break;
			case 6 :
				return '村淘';
				break;
			case 7 :
				return '天猫企业采购';
				break;
			case 8 :
				return '经销商订单';
				break;
			case 10 :
				return 'VR渠道订单';
				break;
			case 11 :
				return '四川电信渠道订单';
				break;
			default :
				return strval ( $source );
				break;
		}
	}
	
	/**
	 * 支付方式
	 */
	public static function getPaymentMethodText($source) {
		switch ($source) {
			case 10 :
				return '货到付款';
				break;
			case 21 :
				return '支付宝';
				break;
			case 22 :
				return '微信';
				break;
			case 29 :
				return '官网渠道支付';
				break;
			case 30 :
				return '余额支付';
				break;
            case 31 :
                return '经销商余额+返现余额';
                break;
			case 40 :
				return '财务支付';
				break;
			default :
				return strval ( $source );
				break;
		}
	}
	
	
	
	
	public static function getRechargeStatusText($source) {
		switch ($source) {
			case 0 :
				return '无效充值';
				break;
			case 1 :
				return '充值成功';
				break;
			
			default :
				return strval ( $source );
				break;
		}
	}
	public static function getHash() {
		$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()+-';
		$random = $chars [mt_rand ( 0, 73 )] . $chars [mt_rand ( 0, 73 )] . $chars [mt_rand ( 0, 73 )] . $chars [mt_rand ( 0, 73 )] . $chars [mt_rand ( 0, 73 )]; // Random 5 times
		$content = uniqid () . $random; // 类似 5443e09c27bf4aB4uT
		return md5 ( $content );
	}
}